﻿/*
SINACOR - BMF&Bovespa
Arquivo: IAlocacaoCarteiraVendaDescoberta.cs
Criado em: 27-nov-2009 11:59:17
Arquiteto Responsável: RAMelo.7Comm
*/
using System;
using System.ServiceModel;
using System.Collections.Generic;
using Sinacor.Infra.Common.Exceptions;
using Sinacor.Infra.Service.ExceptionHandling;
using Sinacor.Infra.Service.Security.Services;
using Sinacor.Infra.Common;
using Sinacor.Infra.Common.Exceptions.FaultContracts;

namespace Sinacor.Servico.Bovespa.Alocacao.Service.ServiceContract
{
    /// <summary>
    /// Contrato de serviços disponibiliza métodos para atender a alteração de alocação
    /// entre carteiras para vendas sem cobertura na carteira 216.
    /// </summary>
    [ExceptionShielding]
    [ServiceContract(Namespace = "http://www.bovespa.com.br/Sinacor.Servico.Bovespa.Alocacao.Service.ServiceContract", SessionMode = SessionMode.Allowed, Name = "IAlocacaoCarteiraVendaDescoberta")]
    public interface IAlocacaoCarteiraVendaDescoberta
    {
        #region Métodos

        /// <summary>
        /// Distribui a alocação de uma venda descoberta para outras carteiras de um
        /// cliente
        /// Transacional:Sim
        /// </summary>
        /// <param name="request"></param>
        [OperationLog]
        [FaultContract(typeof(BusinessFault))]
        [FaultContract(typeof(ValidationFault))]
        [FaultContract(typeof(GeneralFault))]
        [FaultContract(typeof(InvalidSessionFault))]
        [FaultContract(typeof(LicensingFault))]
        [FaultContract(typeof(AccessIsDeniedFault))]
        [TransactionRequired]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "AlterarAlocacaoVendaDescoberta")]
        void AlterarAlocacaoVendaDescoberta(DataContract.Request.VendaDescobertaRequest request);


        /// <summary>
        /// Consulta vendas de ativos dos clientes com quantidade descoberta na Carteira
        /// Geral (216/21016), a consulta inclusive já traz a posição nas carteiras 219,280,
        /// 239,274. Caso o parâmetro de entrada SugerirAlocacaoAutomatica esteja
        /// configurado como verdadeiro o sistema irá sugerir uma alocação das vendas
        /// descobertas entre as carteiras acima descritas.
        /// Transacional:Não
        /// </summary>
        /// <param name="request"></param>
        [OperationLog]
        [FaultContract(typeof(BusinessFault))]
        [FaultContract(typeof(ValidationFault))]
        [FaultContract(typeof(GeneralFault))]
        [FaultContract(typeof(InvalidSessionFault))]
        [FaultContract(typeof(LicensingFault))]
        [FaultContract(typeof(AccessIsDeniedFault))]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ConsultarVendasDescobertas")]
        List<DataContract.Response.VendaDescobertaResponse> ConsultarVendasDescobertas(DataContract.Request.FiltroVendaDescobertaRequest request);


        /// <summary>
        /// Descrição: Informa a situação dos lotes de ordem para uma venda descoberta
        /// Tabelas relacionadas: TORMOVD,TORDISCONJ
        /// Transacional:Não
        /// </summary>
        /// <param name="request"></param>
        [OperationLog]
        [FaultContract(typeof(BusinessFault))]
        [FaultContract(typeof(ValidationFault))]
        [FaultContract(typeof(GeneralFault))]
        [FaultContract(typeof(InvalidSessionFault))]
        [FaultContract(typeof(LicensingFault))]
        [FaultContract(typeof(AccessIsDeniedFault))]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ObterSituacaoLoteOrdemVendaDescoberta")]
        DataContract.Response.SituacaoLoteOrdemResponse ObterSituacaoLoteOrdemVendaDescoberta(DataContract.Request.VendaDescobertaRequest request);

        #endregion Métodos
    }

}
